-
접근 제어 속성 설정
public: 클래스 외부에서 접근 가능, 기본값
private: 클래스 내부에만 접근 가능
protected: 클래스를 포함한 서브 클래스에서만 접근 가능
클래스 상단에 prop으로 설정해놨으면 별도로 선언할 필요는 없다.
-
접근 제어 메소드 설정
public, private, protected 똑같다.
-
상속
extends로 상속
private 접근 제어자로 지정된 것은 상속할 수 없고, 덮어쓸 수 없다.
super를 씀
-
getter, setter
외부에서 조작할 수 없어야할 prop를 private로 설정하고 get, set으로 접근해서 값을 가져오고, 변경할 수 있다.
-
정적 속성/ 메소드
기존에 js에서 static과 다르게 this로 접근할 수 있다. 그 외 기능은 똑같다.
1class Mathmatics {
2
3 // 스태틱 속성
4 static PI:number = Math.PI;
5
6 // 스태틱 메서드
7 // circumference = 둘레(원주)
8 static calcCircumference(radius:number) :number {
9 return this.PI * radius * 2;
10 }
11
12 static calcCircleWidth(radius:number): number {
13 return this.PI * Math.pow(radius, 2);
14 }
15
16}
-
추상 클래스
추상 클래스를 정의할 때는 class 앞에 abstract를 표기한다.
내부에서 속성, 추상 메소드, 실제 메소드를 정의할 수 있다.
추상 메소드는 앞에 abstract를 표기해야한다.
추상 클래스는 인스턴스를 만들 수 없다.
1abstract class Project {
2
3 public project_name:string|null = null;
4 private budget:number = 2000000000; // 예산
5
6 // 추상 메서드 정의
7 public abstract changeProjectName(name:string): void;
8
9 // 실제 메서드 정의
10 public calcBudget(): number {
11 return this.budget * 2;
12 }
13
14}
상속 받은 클래스는 추상 클래스 내에 정의된 추상 메소드를 반드시 구현해야 한다.
-
싱글톤
constructor 앞에 private를 표기하여 인스턴스 생성을 막고, 레이아웃 상위 프로퍼티로 자신을 타입으로 지정한 instance 객체 변수를 리턴함으로써 싱글톤을 구현
1class OnlyOne {
2
3 private static instance: OnlyOne;
4
5 public name:string;
6
7 // new 클래스 구문 사용 제한을 목적으로
8 // constructor() 함수 앞에 private 접근 제어자 추가
9 private constructor(name:string) {
10 this.name = name;
11 }
12
13 // 오직 getInstance() 스태틱 메서드를 통해서만
14 // 단 하나의 객체를 생성할 수 있습니다.
15 public static getInstance() {
16 if (!OnlyOne.instance) {
17 OnlyOne.instance = new OnlyOne('싱글턴 객체');
18 }
19 return OnlyOne.instance;
20 }
21
22}
23
24let good_case = OnlyOne.getInstance();
컴파일 된 es5에서는 적용이 안된다.
-
읽기 전용 속성
readonly를 표기하면 읽기 전용 속성이 되어 다른 값으로 변경할 수 없다.